Existing animation software applications allow users to animate two-dimensional or three-dimensional images including character and other similar artwork by placing handles on the artwork and then moving these handles. The software application determines how to smoothly deform the rest of the artwork based on the handle movements. In this way, a user is able to animate the artwork by controlling the position of the handles, i.e., moving the handles.
Deforming the artwork based on the movement of the handles is accomplished by generating a mesh of triangles with vertices inside of an alpha edge for the artwork. The alpha edge represents the outline of the artwork being animated, and the mesh is generated within the alpha edge. A handle may be placed by a user, using a user interface of the software application. The mesh is generated as a result of new handles placed, with each handle residing on a single vertex of the mesh. As more handles are placed, the software application may increase the density of the mesh in the area between handles to provide finer control of the deformation. The mesh edges are weighted relative to the handles using a gradient function. Thus, the closer a handle is to a particular edge of the mesh the more the constraints of that handle (e.g., the position) affects the mesh.
Some software applications include different types of handles. One type of handle is a position handle that enables the user to move the handle to a new position. If not moved by the user (e.g., the user drags the handle to a new position), the position remains fixed and is not affected by constraints of other handles. This may cause the mesh to deform (stretch, bend, etc.) between the two handles. Some position handles may enable the user to not only move the handle (e.g., change the position), but also scale and rotate the handle. Increasing the scale of a position handle may make the area of the triangles around this handle larger and decreasing the scale may make the area of the triangles smaller. A rotation for such a handle rotates the mesh (and the alpha edge) around that handle's position. Another type of handle is a rigid handle that may be used to fix or make rigid a portion of the artwork. Once a rigid handle is placed in the mesh the user has no further interaction with the handle, but its presence makes the mesh surrounding the rigid handle resistant to deformation. For example, changing the position and rotation of a nearby position handle may cause the rigid handle to move (change position), scale and/or rotate (in order to minimize deformation), and may drastically deform the mesh surrounding any nearby handles automatically.